<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>
        // Set   

        // this指向
        //   普通函数  window
        //   严格模式下的普通函数   undefined
        //   事件处理函数   事件源
        //   对象中   对象本身
        //   构造函数中   实例化对象
        //   箭头函数   父函数

        //   call(新的指向,arg1 , arg2)
        //   apply(新的指向,[])
        //   bind(新的指向,arg1 , arg2)  只是改变指向   但不会执行函数



        // 原型链
        //   每一个对象都有一个属性(原型)__proto__  指向构造函数的原型对象prototype
        //   构造函数的原型对象prototype也有原型，他的原型指向Object的原型对象prototype
        //   Object的原型对象的原型指向null

        //   如果需要判断一个对象是否拥有某个属性或者方法，可以通过原型链查找(自己如果没有，就是构造函数的原型对象上去找，如果构造函数的原型对象上也没有这个属性或者方法，就去Objet的原型对象上去找，如果也找不到，就是没有这个属性或者方法)


        // class
        //    constructor(){}



        // const arr = [];

        // console.log(arr.__proto__ === Array.prototype)
        // console.log(arr.__proto__.__proto__ === Object.prototype);
        // console.log(arr.__proto__.__proto__.__proto__ === null);


        // console.log(arr.__proto__ === Array.prototype)
        // console.log(Array.prototype.__proto__ === Object.prototype);
        // console.log(Object.prototype.__proto__ === null);



        // new的作用
        //   4件事情
        

        // 作用域链






    </script>

</body>

</html>